#include"TcpServer.hpp"
#include<memory>

using namespace std;
using namespace ns_server;

static void usage(char proc[])
{
    cout<<"Usage:\n\t"<<proc<<" prot"<<endl;
}

Responce calculate(const Resquest&res)
{
    Responce resp(0,0);
    switch(res._op)
    {
        case '+':
            resp._result=res._x+res._y; 
            break;
        case '-':
            resp._result=res._x-res._y;
            break;
        case '*':
            resp._result=res._x*res._y;
            break;
        case '/':
            if(res._y==0) resp._code=1;
            else resp._result=res._x/res._y;
            break;
        case '%':
            if(res._y==0) resp._code=2;
            else resp._result=res._x%res._y;
            break;
        default:
            resp._code=3;
           break;
    }

    return resp;
}

int main(int argc,char*args[])
{
    if(argc!=2)
    {
        usage(args[0]);
        exit(USAGE_ERR);
    }
    uint16_t port=atoi(args[1]);
    unique_ptr<TcpServer>ts(new TcpServer(port,calculate));
    ts->InitServer();
    ts->Start();
    

    return 0;
}